Template update for nf-core/tools v4.1.0 - #183
Conversation
Merge the regenerated TEMPLATE branch (tools 4.0.1 -> 4.1.0) into dev. Because the 4.0.2 bump on dev was hand-applied rather than synced, this also carries the 4.0.2 and 4.0.3 template changes. Conflict resolutions: - nextflow.config: took the template's nextflowVersion '!>=25.10.4'; kept dev's params block, contributor list and removal of the custom_config_base include. Bumped the nf-test NXF_VER matrix and the README Nextflow badge to 25.10.4 to match. - nextflow.config: filled the previously empty manifest contribution fields - Luuk Harbers and Robert Forsyth as author+maintainer, the remaining five as author. This also fixes the "No authors found in pipeline manifest" error when building the RO-Crate. - conf/igenomes.config: adopted the template's new strict-syntax params.genomes map literal and re-applied dev's customisations on top (GRCh37 dropped, pipeline-specific GRCh38 and CHM13 entries). - workflows/lrsomatic.nf, main.nf, docs/output.md, CHANGELOG.md, assets/multiqc_config.yml, docs/usage.md test command, and tests/nextflow.config pipelines_testdata_base_path: kept dev's. - .github/workflows/branch.yml: took the template's hardened form that passes the head repo through an env var instead of interpolating it directly into the shell. - conf/modules.config: kept dev's '.*:MULTIQC' selector, adopted the template's publishDir without saveAs. - ro-crate-metadata.json: regenerated with nf-core pipelines rocrate. Template changes pulled in: - New pre-commit hooks: check-added-large-files, check-merge-conflict and a local block-pipeline-outdir hook (.hooks/block_pipeline_outdir.sh). - New process_low_memory resource label in conf/base.config. - New .github/workflows/pr-comment.yml (split-out PR comment poster). - MultiQC module bumped to 1.35. - utils_nfschema_plugin gained a cli_typecast input, passed as false. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The 4.1.0 template's end-of-file-fixer pre-commit hook flags this pre-existing issue, which would fail the linting workflow. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
There was a problem hiding this comment.
Pull request overview
This PR performs a manual nf-core pipeline template sync to nf-core/tools 4.1.0, updating repository scaffolding, CI workflows, configs, and bundled nf-core modules/subworkflows to match the newer template baseline.
Changes:
- Syncs template/CI infrastructure (new shared PR comment poster workflow, hardened PR workflows, updated action pins, and updated linting/nf-test behavior).
- Updates pipeline configuration and metadata (Nextflow minimum version bump, contributor metadata/RO-Crate regeneration,
conf/igenomes.configstrict map syntax, newprocess_low_memorylabel). - Bumps bundled MultiQC module and associated assets (MultiQC 1.35, updated snapshots, container references, and conda lockfiles).
Reviewed changes
Copilot reviewed 42 out of 44 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/nextflow.config | Adjusts AWS anonymous client config comment formatting. |
| subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config | Updates nf-schema plugin version used in tests. |
| subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test | Extends test inputs to cover new cli_typecast parameter. |
| subworkflows/nf-core/utils_nfschema_plugin/meta.yml | Documents new inputs for schema/help behavior and CLI typecasting. |
| subworkflows/nf-core/utils_nfschema_plugin/main.nf | Adds cli_typecast handling and updates option keys passed to nf-schema helpers. |
| subworkflows/local/utils_nfcore_lrsomatic_pipeline/main.nf | Updates call signature to pass new cli_typecast argument. |
| ro-crate-metadata.json | Regenerates RO-Crate metadata and updates embedded README/template/version metadata. |
| README.md | Updates badges for minimum Nextflow and template version. |
| nextflow.config | Fills contributor contribution fields and bumps minimum Nextflow version. |
| nextflow_schema.json | Drops directory-path format for igenomes_base. |
| modules/nf-core/multiqc/tests/main.nf.test.snap | Updates snapshots for MultiQC 1.35. |
| modules/nf-core/multiqc/meta.yml | Updates container/lockfile references for MultiQC 1.35 build IDs. |
| modules/nf-core/multiqc/main.nf | Updates MultiQC container URI/tag to 1.35. |
| modules/nf-core/multiqc/environment.yml | Bumps conda dependency to multiqc=1.35. |
| modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-5c84a5000a226ab5_1.txt | Adds new arm64 conda lockfile for updated MultiQC environment. |
| modules.json | Updates pinned SHAs for pulled nf-core modules/subworkflows. |
| docs/usage.md | Minor doc formatting fix (Nextflow version string). |
| docs/CONTRIBUTING.md | Fixes lint anchor link and a minor doc typo. |
| conf/modules.config | Updates MultiQC publishDir behavior to match template changes. |
| conf/igenomes.config | Migrates genomes config to strict params.genomes map literal syntax. |
| conf/containers_singularity_oras_arm64.config | Updates MultiQC container reference to 1.35 (arm64 ORAS). |
| conf/containers_singularity_oras_amd64.config | Updates MultiQC container reference to 1.35 (amd64 ORAS). |
| conf/containers_singularity_https_arm64.config | Updates MultiQC container blob URL to 1.35 (arm64 HTTPS). |
| conf/containers_singularity_https_amd64.config | Updates MultiQC container blob URL to 1.35 (amd64 HTTPS). |
| conf/containers_docker_arm64.config | Updates MultiQC container tag to 1.35 (arm64 Docker). |
| conf/containers_docker_amd64.config | Updates MultiQC container tag to 1.35 (amd64 Docker). |
| conf/containers_conda_lock_files_arm64.config | Updates MultiQC conda lockfile path wiring (arm64). |
| conf/containers_conda_lock_files_amd64.config | Updates MultiQC conda lockfile path wiring (amd64). |
| conf/base.config | Adds process_low_memory resource label. |
| CHANGELOG.md | Documents template sync, Nextflow bump, contributor metadata fix, and MultiQC bump. |
| .pre-commit-config.yaml | Adds new pre-commit hooks and bumps Prettier dependency. |
| .nf-core.yml | Updates declared nf-core template/tools version to 4.1.0. |
| .hooks/block_pipeline_outdir.sh | Adds local pre-commit hook to prevent committing pipeline output directories. |
| .gitignore | Fixes trailing newline/formatting. |
| .github/workflows/template-version-comment.yml | Refactors template-version commenting into an artifact-producing workflow. |
| .github/workflows/pr-comment.yml | Adds shared privileged workflow to post PR comments from artifacts. |
| .github/workflows/nf-test.yml | Updates checkout pins, Nextflow matrix, and adds PR comment artifact generation for latest-everything failures. |
| .github/workflows/linting.yml | Fixes always-true if: logic and adds PR comment artifact generation for lint results. |
| .github/workflows/fix_linting.yml | Updates action pins for lint auto-fix workflow. |
| .github/workflows/download_pipeline.yml | Updates workflow to check out code and changes .nf-core.yml parsing approach. |
| .github/workflows/clean-up.yml | Updates stale action pin. |
| .github/workflows/branch.yml | Hardens branch protection workflow and switches to artifact-based PR commenting. |
| .github/actions/nf-test/action.yml | Updates action pins for the composite nf-test action. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| - name: Read .nf-core.yml | ||
| uses: pietrobolcato/action-read-yaml@9f13718d61111b69f30ab4ac683e67a56d254e1d # 1.1.0 | ||
| id: read_yml | ||
| with: | ||
| config: ${{ github.workspace }}/.nf-core.yml | ||
| run: | | ||
| echo "nf_core_version=$(yq '.nf_core_version' ${{ github.workspace }}/.nf-core.yml)" >> "$GITHUB_OUTPUT" | ||
|
|
| - cli_typecast: | ||
| type: boolean | ||
| description: | | ||
| Whether to apply typecasting to the parameters given via the CLI before validation. | ||
| Set this to `null` to use the default behavior. |
| "", | ||
| command | ||
| command, | ||
| false | ||
| ) |
…iation Adds @AmberVerhasselt to `manifest.contributors` with contribution type `contributor`, placed after @robert-a-forsyth, and to the README credits. Luuk Harbers' affiliation is expanded to the same three-part string the other core contributors carry. `ro-crate-metadata.json` is updated by hand to match: a new Person entity for Amber, a new `contributor` array on the workflow entity, the updated affiliation, and the same credits sentence in the embedded README description (kept byte-identical so `rocrate_readme_sync` does not rewrite the file and escape the non-ASCII names). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
His `github` field was a copy of @MariosEft97's URL. Set it to https://github.com/laulambr (name and VIB affiliation match; the only GitHub account under that name) and mirrored the change into `ro-crate-metadata.json`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 42 out of 44 changed files in this pull request and generated no new comments.
Suppressed comments (5)
subworkflows/local/utils_nfcore_lrsomatic_pipeline/main.nf:69
UTILS_NFSCHEMA_PLUGINdocuments thatcli_typecastshould be set tonullto use default behavior, but this pipeline hard-codesfalse, which forces typecasting off for CLI params during validation. If there is no strong reason to override, passnull(or make it configurable) to preserve upstream defaults.
ro-crate-metadata.json:392- In the RO-Crate Person entry for Laurens Lambrechts,
urlis set to https://github.com/MariosEft97 (same as Marios). This appears inconsistent with thenamefield and likely a copy/paste error. Update the URL to Laurens' correct GitHub profile (or omit it) to keep author metadata accurate.
nextflow.config:367 - The GitHub profile URL for 'Laurens Lambrechts' is set to the same value as 'Marios Eftychiou' (https://github.com/MariosEft97). This looks like a copy/paste error and will propagate into generated metadata (e.g., RO-Crate). Update
github:to Laurens' correct GitHub URL (or remove the field if unknown).
.github/workflows/branch.yml:47 - The generated PR comment text contains a grammatical error: "pull-request is has been made". Please change this to "pull request has been made" (or similar) since this message is user-facing and will be posted on PRs.
Hi @${PR_USER},
It looks like this pull-request is has been made against the [${HEAD_REPO}](https://github.com/${HEAD_REPO}) ${BASE_REF} branch.
The ${BASE_REF} branch on nf-core repositories should always contain code from the latest release.
Because of this, PRs to ${BASE_REF} are only allowed if they come from the [${HEAD_REPO}](https://github.com/${HEAD_REPO}) \`dev\` branch.
.github/workflows/template-version-comment.yml:3
- The workflow header comment says it "posts a comment to the PR", but this workflow now only builds and uploads a
pr-commentartifact for the sharedpr-comment.ymlworkflow to publish. Please update the comment to reflect the current behavior (artifact producer rather than direct commenter).
name: nf-core template version comment
# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version.
# It posts a comment to the PR, even if it comes from a fork.
…ibutors Uses the same three-part VIB CCB / LICG KU Leuven / VIB CAICB string that @ljwharbers and @robert-a-forsyth carry, dropping the Laboratory of Multi-omic Integrative Bioinformatics entry. Mirrored into `ro-crate-metadata.json`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 42 out of 44 changed files in this pull request and generated no new comments.
Suppressed comments (2)
.github/workflows/download_pipeline.yml:64
- This step uses
yqto read.nf-core.yml, but the workflow never installsyq(and it isn't guaranteed to be present onubuntu-latest). Either install it explicitly (e.g.,mikefarah/yqaction orapt-get install yq) or switch to an existing YAML-read action like the other workflows do.
- name: Read .nf-core.yml
id: read_yml
run: |
echo "nf_core_version=$(yq '.nf_core_version' ${{ github.workspace }}/.nf-core.yml)" >> "$GITHUB_OUTPUT"
.github/workflows/pr-comment.yml:73
headeris read from an artifact produced by untrusted PR workflows, then written directly to$GITHUB_OUTPUT. Ifpr-comment/header.txtcontains newlines orkey=value-like content, this can inject/override step outputs. Sanitizeheader(e.g., restrict to[A-Za-z0-9._-]+and/or strip newlines) and emit outputs using the multiline-safe<<EOFformat before passing it tosticky-pull-request-comment.
echo "pr_number=$pr_number" >> "$GITHUB_OUTPUT"
echo "header=$header" >> "$GITHUB_OUTPUT"
echo "post=true" >> "$GITHUB_OUTPUT"
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 42 out of 44 changed files in this pull request and generated 1 comment.
Suppressed comments (2)
.github/workflows/download_pipeline.yml:64
- This step uses
yqto read.nf-core.yml, but the workflow doesn’t installyqanywhere. To avoid CI failures on runners withoutyqpreinstalled, either add an explicit install step (apt/snap/brew) before this, or switch back to a dedicated YAML-read action.
- name: Read .nf-core.yml
id: read_yml
run: |
echo "nf_core_version=$(yq '.nf_core_version' ${{ github.workspace }}/.nf-core.yml)" >> "$GITHUB_OUTPUT"
subworkflows/nf-core/utils_nfschema_plugin/meta.yml:30
- The
typefield valueboolean, stringis a single YAML scalar, not a list/union type. If the nf-core YAML schema expects multiple allowed types, this should be expressed as a YAML sequence (e.g.type: [boolean, string]) or whatever the schema supports; as written it’s likely to fail linting/validation.
| on: | ||
| pull_request: | ||
|
|
||
| permissions: {} |
Template update for nf-core/tools 4.1.0
Manual template sync (
nf-core pipelines sync) from tools 4.0.2 → 4.1.0. This pipeline is not an official nf-core pipeline (is_nfcore: false), so no automated sync PR is ever opened — this was run by hand.Sync-history note
origin/TEMPLATEhad been left behind at tools 3.1.1: the local 4.0.1 sync commit was never pushed, and the 4.0.2 bump was applied todevby hand without a sync.origin/TEMPLATEhas now been fast-forwarded to the regenerated 4.1.0 build (1a17a98..be762da, no history rewrite), so future syncs work from a clean base. Because 4.0.2 was hand-applied, this merge also carries the 4.0.2 and 4.0.3 template changes.Template changes pulled in
check-added-large-files(--maxkb=5000),check-merge-conflict, and a localblock-pipeline-outdirhook backed by the new.hooks/block_pipeline_outdir.sh. Prettier dependency bumped to 3.9.6.conf/base.config— newprocess_low_memoryresource label.conf/igenomes.config— converted to the template's strict-syntaxparams.genomes = [...]map literal..github/workflows/pr-comment.yml— new split-out PR-comment poster (security hardening, switch to more secure split PR comment approach nf-core/tools#4342).branch.ymlnow passes the head repo through an env var instead of interpolating it straight into the shell..github/workflows/linting.yml— always-trueif:condition fixed.conf/modules.config— MultiQCpublishDirno longer usessaveAs(Template: Fix publishDir configuration in modules.config for multiqc nf-core/tools#4347)..conda-lock/files.utils_nfschema_plugingained acli_typecastinput.nextflow_schema.json—format: directory-pathdropped fromigenomes_base(Remove format constraint for igenomes_base nf-core/tools#4253).#lint-testsanchor, a dead link, and two typos.Conflict resolutions
Kept dev's version:
workflows/lrsomatic.nf,main.nf(still passes onlysamplesheet),docs/output.md,assets/multiqc_config.ymlreport_comment, thedocs/usage.mdGRCh38 example command,tests/nextflow.configpipelines_testdata_base_path, theparamsblock and contributor list innextflow.config, and the'.*:MULTIQC'selector inconf/modules.config.Took the template's version:
branch.ymlhardening, andmanifest.nextflowVersion.Reconstructed by hand:
conf/igenomes.config— took the template's new map syntax and re-applied dev's customisations on top:GRCh37dropped, and the pipeline-specificGRCh38/CHM13entries (GATK fasta,ascat_*,centromere_bed,pon_file,bed_file,vep_*,gnomad,dbsnp,onekgenomes,colors,asap) rewritten inkey : value,form. The new strict-syntaxnextflow-lintpre-commit hook passes on the result.ro-crate-metadata.json— regenerated withnf-core pipelines rocrate.!>=25.10.4(was!>=25.04.0), taken from the template. The nf-test CI matrix and the README badge were bumped to match. This raises the minimum Nextflow version for users — flagging it explicitly since it is the one change here that is not cosmetic.manifest.contributorscontributionfields were empty for all seven contributors, which is why the RO-Crate build loggedNo authors found in pipeline manifest. Now filled: @ljwharbers and @robert-a-forsyth as['author', 'maintainer'], the other five as['author'](matching the README credits).Also included: a missing trailing newline in
.gitignore, which the newend-of-file-fixerhook flags (pre-existing, would have failed the linting workflow).Testing
prek run --all-files— all 7 hooks pass, including the new strict-syntaxnextflow-lintover the rewrittenigenomes.config.nf-core pipelines lint— run locally; see the checks on this PR for the authoritative result.nf-test tests/default.nf.test --profile debug,test,apptainer— submitted as a slurm job on wICE (apptainer rather than docker, since there is no docker daemon on the cluster). Expect snapshot updates from the MultiQC 1.35 bump; the remaining profiles are left to this PR's CI.🤖 Generated with Claude Code